The present invention relates to systems, computer program products, and methods for resizing memory pools for database management systems.
In typical database management system architectures, limited memory resources need to be allocated and shared by many different memory consumers. Efficient sharing of memory is particularly important in database architectures running on 32-bit data processing systems with a maximum addressable memory of 4 GB. Even on 64-bit data processing systems that may address a much larger memory space, given the cost of high performance random access memory and solid-state disks, memory may still be a limited system resource that needs to be allocated and shared.
By way of example, one of these memory consumers may be a lock memory associated with each database. This lock memory is also commonly known as a “lock heap” or “locklist”, and provides a memory pool for various database agents or processes for storing locks while processing various database transactions. For example, during processing of a query, a database agent may request locks to a number of records in a database table to prevent another agent from accessing and altering the records. As will be explained in detail further below, locklist memory resources must be carefully allocated in order to achieve functional or performance goals.
Heretofore, memory pools such as locklists have been configured as a contiguous block of memory that cannot be decreased in size without deactivating/reactivating the database. This limitation has restricted the ability of database administrators to resize a memory pool after a peak period for improved database performance. Systems, computer program products, and methods for resizing memory pools, such as locklists, without deactivation/reactivation of a database are needed.